package com.neuedu.yyzx.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.neuedu.yyzx.mapper.MenuMapper;
import com.neuedu.yyzx.po.Menu;
import com.neuedu.yyzx.service.MenuService;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Administrator
 * @description 针对表【menu(菜单权限表)】的数据库操作Service实现
 * @createDate 2025-04-14 14:27:21
 */
@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu>
        implements MenuService {

    @Override
    public List<Menu> getAllTree() {
        List<Menu> allMenus = getBaseMapper().selectList(null);

        List<Menu> result = new ArrayList<>();

        /**
         *  1 权限管理
         *      2
         *      3
         *      4
         *
         *  5 入住管理
         *      6
         *          8
         *          9
         *      7
         *          10
         *          11
         */

        // 1  循环  allMenus 找   parent_id 为0 顶级菜单
        for (Menu itemMenu : allMenus) {
            if (itemMenu.getParentId().intValue() == 0) {

                // 1 找到了 顶层菜单
                result.add(itemMenu); // 权限管理

                // 2 查找 子菜单
                this.queryChildren(allMenus, itemMenu);
            }
        }
        // 2 递归 查找每个  顶级菜单的  子菜单  当前父菜单 的 id  等于 每次循环的 菜单  parent_Id
        System.out.println("result = " + result);

        return result;
    }


    /**
     * 查找 处理 子菜单
     *
     * @param allMenus
     * @param parentMenu
     */
    private void queryChildren(List<Menu> allMenus, Menu parentMenu) {
        for (Menu itemMenu : allMenus) {
            if (itemMenu.getParentId().intValue() == parentMenu.getMenuId().intValue()) {
                List<Menu> children = parentMenu.getChildren();
                children.add(itemMenu); // 用户管理
                queryChildren(allMenus, itemMenu);
            }

        }

    }


}




